package com.cn.controller;

import com.cn.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * 简化开发操作
 * 1.在Controller类上使用@RequestMapping定义共同的访问路径。
 * 2.使用@GetMapping  @PostMapping  @PutMapping  @DeleteMapping代替@RequestMapping(method=RequestMethod.XXX)
 * 3.在Controller类上使用@RestController注解，等同于@Controller与@ResponseBody两个注解组合功能
 */
//@Controller
@RestController
@RequestMapping("/newUsers1")
public class UserControllerQuick {
    //设置当前请求方法为POST，表示REST风格中的添加操作
    //@RequestMapping(method = RequestMethod.POST )
    @PostMapping //使用@PostMapping简化Post请求方法对应的映射配置
    @ResponseBody
    public String save(@RequestBody User user){
        System.out.println("添加操作:"+user);
        System.out.println("user save ...");
        return "{'module':'user save'}";
    }

    //设置当前请求方法为DELETE，表示REST风格中的删除操作
    //@PathVariable注解用于设置路径变量（路径参数），要求路径上设置对应的占位符，并且占位符名称与方法形参名称相同
    //@RequestMapping(value = "/{id}",method = RequestMethod.DELETE)
    @DeleteMapping("/{id}")
    @ResponseBody //使用@DeleteMapping简化DELETE请求方法对应的映射配置
    public String delete(@PathVariable Integer id){
        System.out.println("user delete..." + id);
        return "{'module':'user delete'}";
    }

    //设置当前请求方法为PUT，表示REST风格中的修改操作
    //@RequestMapping(method = RequestMethod.PUT)
    @PutMapping //使用@PutMapping简化Put请求方法对应的映射配置
    @ResponseBody
    public String update(@RequestBody User user){
        System.out.println("user update..."+user);
        return "{'module':'user update'}";
    }

    //设置当前请求方法为GET，表示REST风格中的查询操作
    //@PathVariable注解用于设置路径变量（路径参数），要求路径上设置对应的占位符，并且占位符名称与方法形参名称相同
    //@RequestMapping(value = "/{id}" ,method = RequestMethod.GET)
    @GetMapping("/{id}") //使用@GetMapping简化GET请求方法对应的映射配置
    @ResponseBody
    public String getById(@PathVariable Integer id){
        System.out.println("user getById..."+id);
        return "{'module':'user getById'}";
    }

    //设置当前请求方法为GET，表示REST风格中的查询操作
    //@RequestMapping(method = RequestMethod.GET)
    @GetMapping //使用@GetMapping简化GET请求方法对应的映射配置
    @ResponseBody
    public String getAll(){
        System.out.println("user getAll...");
        return "{'module':'user getAll'}";
    }

}
